﻿using Newtonsoft.Json;

namespace Fadada.FASC.SDK.DotNetCore.Model
{
    public class RespUserGetInfo
    {
        /// <summary>
        /// 用户在应用系统中的唯一标识。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "clientUserId", Required = Required.Always)]
        public string ClientUserId { get; set; }

        /// <summary>
        /// 个人用户别名，便于在使用和管理时的可辨识性。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "clientUserName", Required = Required.AllowNull)]
        public string ClientUserName { get; set; }

        /// <summary>
        /// 授权状态，表示是否完成帐号授权绑定：unauthorized: 未授权(openUserId和userId未完成帐号绑定)authorized: 已授权(openUserId和userId已经完成帐号绑定)
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "bindingStatus", Required = Required.Always)]
        public string BindingStatus { get; set; }

        /// <summary>
        /// 用户授权范围列表：只有在授权范围内的权限，该应用系统才可调用：ident_info: 身份信息(涉及个人隐私数据，需得到用户授权)
        /// signtask_init: 发起签署任务(在合同签署任务中，发起方地位特殊，需得到用户授权)resource_for_sign: 签署相关数据资源(如文档和模板等，是属于用户的，需得到用户授权)
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "authScope", Required = Required.AllowNull)]
        public string[] AuthScope { get; set; }

        /// <summary>
        /// 实名认证状态：unidentified: 未认证(如果尚未授权绑定帐号，则当做未认证)identified: 已认证且有效
        /// ident_invalid：认证失效(注意检查认证中心中的状态，认证可能失效/如过期)该参数非常重要，因为只有有效实名认证的用户方可使用法大大电子签服务。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "identStatus", Required = Required.Always)]
        public string IdentStatus { get; set; }

        /// <summary>
        /// 个人用户有效状态：disable: 禁用状态enable: 启用状态该参数非常重要，因为只有有效的用户方可使用法大大电子签服务。禁用状态的用户只能调用下面接口：
        /// 添加个人用户更新个人用户删除个人用户恢复个人用户查询个人用户基本信息
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "availableStatus", Required = Required.Always)]
        public string AvailableStatus { get; set; }
    }
}